package org.mybatis.generator.codegen.mybatis3;

import org.mybatis.generator.api.FullyQualifiedTable;
import org.mybatis.generator.api.IntrospectedColumn;

import java.lang.reflect.Field;
import java.lang.reflect.Proxy;
import java.util.List;

/*********************************************************
 * 文件名称：ExtIntrospectedTableMyBatis3Impl.java
 * 系统名称：cxycloud
 * 模块名称：org.mybatis.generator.codegen.mybatis3
 * 功能说明：表名强制小写
 * 开发人员 @author：caoxy31978
 * 开发时间 @date：2023/11/22 17:26
 * 修改记录：程序版本  修改日期  修改人员  修改单号  修改说明
 *********************************************************/
public class ExtIntrospectedTableMyBatis3Impl extends IntrospectedTableMyBatis3Impl{
    @Override
    public void initialize() {
        if (ExtMyBatis3FormattingUtilities.tableAndColumnToLowerCase(context)){
            try {
                Class<? extends FullyQualifiedTable> aClass = fullyQualifiedTable.getClass();
                Field introspectedTableName = aClass.getDeclaredField("introspectedTableName");
                introspectedTableName.setAccessible(true);
                introspectedTableName.set(fullyQualifiedTable,fullyQualifiedTable.getIntrospectedTableName().toLowerCase());
            } catch (Exception e) {
            }
            for (IntrospectedColumn baseColumn : baseColumns) {
                baseColumn.setActualColumnName(baseColumn.getActualColumnName().toLowerCase());
            }
            for (IntrospectedColumn primaryKeyColumn : primaryKeyColumns) {
                primaryKeyColumn.setActualColumnName(primaryKeyColumn.getActualColumnName().toLowerCase());
            }
            for (IntrospectedColumn blobColumn : blobColumns) {
                blobColumn.setActualColumnName(blobColumn.getActualColumnName().toLowerCase());
            }
        }
        super.initialize();
    }
}
